package smartMarket.estoque;

import excecoes.estoque.DinheiroNegativoException;
import excecoes.estoque.QuantidadeNegativaException;

public class Produto {

    // Atributos
    private String codigoDeBarras;
    private String descricao;
    private boolean ativo;
    private float preco;
    private float custo;
    private int quantidade;
    private int quantidadeMinima;
    private int codigo;

    // Gets
    public int getCodigo() {
        return codigo;
    }

    public String getCodigoDeBarras() {
        return codigoDeBarras;
    }

    public String getDescricao() {
        return descricao;
    }

    public float getPreco() {
        return preco;
    }

    public float getCusto() {
        return custo;
    }

    public boolean getAtivo() {
        return ativo;
    }

    public int getQuantidade() {
        return quantidade;
    }

    public int getQuantidadeMinima() {
        return quantidadeMinima;
    }

    // Sets
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public void setCodigoDeBarras(String codigoDeBarras) {
        this.codigoDeBarras = codigoDeBarras;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;

    }

    public void setPreco(float preco) throws DinheiroNegativoException, NumberFormatException {
        if (preco < 0) {
            throw new DinheiroNegativoException();
        }
        this.preco = preco;
    }

    public void setCusto(float custo) throws DinheiroNegativoException, NumberFormatException {
        if (custo < 0) {
            throw new DinheiroNegativoException();
        }
        this.custo = custo;
    }

    public void setQuantidade(int quantidade) throws QuantidadeNegativaException, NumberFormatException {
        if (quantidade < 0) {
            throw new QuantidadeNegativaException();
        }
        this.quantidade = quantidade;
    }

    public void setQuantidadeMinima(int quantidadeMinima) throws QuantidadeNegativaException, NumberFormatException {
        if (quantidadeMinima < 0) {
            throw new QuantidadeNegativaException();
        }
        this.quantidadeMinima = quantidadeMinima;
    }

    // Sobrecarga do método equals
    public boolean equals(Produto produto) {
        if (this.getDescricao().equals(produto.getDescricao())) {
            return true;
        } else if (this.getCodigoDeBarras().equals(produto.getCodigoDeBarras())) {
            return true;
        }
        return false;
    }
}